/* 
 * File:   JServer.h
 * Author: johnneyshi
 *
 * Created on 2013年1月26日, 下午1:10
 */

#ifndef JSERVER_H
#define	JSERVER_H
#include <string>
#include "JBuffer.h"

class JServer 
{
public:
    JServer();
    JServer(std::string _ip,int _port);
    //JServer(const JServer& orig);
    virtual ~JServer();
    void Init(std::string _ip,int _port);
    void Start();
    //epoll在accetp得到新的连接时，调用这个函数.
    virtual void DealEpollFd(int fd);
    //epoll中检测到的除了accept的描述符的其他描述符的处理函数.
    virtual void DealNewConnfd(int newFd);
    std::string GetIP();
    int GetPort();
    JBuffer* GetAvailableBuffer();
private:
    std::string ip;
    int port;
    int Bind(std::string _ip,int _port);
    void Wait(int fd);
    
    std::vector<JBuffer*> pBuffers;
protected:
    int epollHandler;
    void SetNonBlock(int fd);
    
};

#endif	/* JServer_H */

